Various methods have been developed for programming a computer. One common method involves writing source code which designates a series of operations. The source code is then compiled into machine-executable code. The computer then loads and executes the machine-executable code to perform the designated series of operations. The source code programming method has a significant disadvantage in that it generally requires a high degree of programming skill and many hours of software design, coding, testing and debugging. Thus, this method is impractical for the average computer user.
Another method for programming a computer involves writing a script file which designates a series of operations. According to this method, the script file is interpreted by a script execution routine. In response to reading the script file, the script execution routine causes the computer to perform the operations designated in the script file. The script programming method is similar to the source programming code method with the exception that script languages are usually tailored to particular applications. For example, a communications program may be designed to execute script files with commands for setting protocols, setting the operational parameters of a modem, and logging on to remote systems.
Because they only cover a specific application, a script language typically has fewer commands than standard programming languages. Because fewer and more specialized commands are available to the user, less skill and time are required to create script files than are required to create source code files. However, the creation of meaningful script files is still beyond the skill level of many computer users.
Further, for complex tasks such as automating an experiment, a limited command set may not suffice. For example, a single experiment may involve operations on numerous instruments. Each of the instruments may be capable of operating in a variety of modes. Each mode may support numerous types of operations. In addition, each operation may be performed on numerous combinations of specimens. A script language designed to support more than a trivial amount of instrument/mode/operation/specimen combinations would likely be as complex as a source code language, and therefore require a programming expertise not normally possessed by technicians who perform experiments.
A disadvantage common to both source code and script programming is that they are based on textual commands. Because the commands are textual, the commands tend to favor a particular natural language. For example, a programming language which contains the commands "begin" and "end" would be better understood by English-speaking users, and less comprehensible to users that do not speak English.
A second disadvantage common to both source code and script programming is that typical textual programming environments do not inherently assist the programmer. For example, most textual programming environments present the programmer with a blank screen or window in which to type the text of a program or script. The blank window does not communicate the available commands. Therefore, a programmer must either have the commands memorized, or frequently revert to a help screen or a user's manual.
A third disadvantage common to both source code and script programming is that they are both textual. As textual descriptions, source code and scripts are subject to numerous types of errors. For example, textual descriptions ,are subject to lexical errors, syntactic errors, and logic errors. Because textual descriptions are subject to numerous types of errors, the process of designing and debugging error-free programs is arduous and time-intensive.
A fourth disadvantage is that source code and script programming require many lines of code to accomplish a single assignment or command. Therefore, the programmer must retype lines of text or use text editors to move text from one source to another. For example, the user will have to configure the external device before initiating an execution command. All or parts of the configuration will change depending on the demands of the technician who performs the experiment. A technician often shortens complex configurations to a simple word or phrase which is used in conversation and in documentation to represent the complex configuration or settings. Source code and script programming do not use shortened technician language as an alternative to the many lines of code.
In light of the foregoing, it is clearly desirable to provide a method for automating experiments which does not require a high degree of programming expertise. Further, it is clearly desirable to provide a method for programming which contains a high degree of natural language independence. In addition, it is desirable to provide a method for programming a computer which supports a relatively extensive number of operations, but which presents the user with a relatively small subset of relevant operations at any given time. Further, it is desirable to provide a method for programming which is not subject to all of the types of errors inherent in textual programming.